Repository navigation
Conversation
Copied from turbomam/feature-table-corpus at 4aaca94 (ber_feature_model.yaml 0.1.0 and attributes.yaml), following the measurements module's pattern. Two changes from the copy, both needed for this repository's build: the name slot becomes display_name with alias name, since the root schema defines name; and the EDAM.DATA prefix becomes EDAM, which gen-python can emit. MIXS and EDAM are also declared in the root so the generated Python defines them.
Remove notes, comments and description wording that describe the feature-table-corpus conversion tooling or cite files in that repository, which do not exist here. Keep short notes that define the model itself, and point to the v0.1.0 release for the evidence behind each element. Drop tree_root from Dataset so the imported module does not set the root class for the whole central schema.
MethodEnum lists the nine methods the feature-table-corpus converters already name inside feature_id. The three Pfam hits in the valid example now carry method: pfam; a new invalid example uses NMDC's current spelling superfamily.
…FF symbols as deliberate in lint feature-table-corpus spells the prefix EDAM_DATA since turbomam/feature-table-corpus#163; the IRIs are unchanged. .linkmllint.yaml excludes the four GFF3 strand symbols from standard_naming. Lint still reports EDAM_DATA, because the canonical EDAM.DATA can't be emitted by gen-python (linkml/linkml#3458).
…re-method-slot # Conflicts: # src/ber_central_schema/schema/ber_feature_model.yaml
…P feature_id exception
This comment was marked as resolved.
This comment was marked as resolved.
The valid examples are real data converted by the model's own profiles: an NMDC run with its contig collection, phiX174 with joined and origin-crossing locations, and Pfam hits with their alignment targets. Each invalid example breaks one constraint and is named for it.
Also copies turbomam/feature-table-corpus#172: note, dbxref, ontology_term and taxonomic_lineage are ordered, and '.' is described as not stranded.
This comment was marked as resolved.
This comment was marked as resolved.
Contributor
Author
|
I'm going to update this PR's description now and hide resolved bot reviews |
turbomam
marked this pull request as ready for review
October 14, 2026 15:35
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #5 (Add the BER feature model as an imported module); review that first.
Why
A feature table that holds every annotation method's hits needs the method as a column, so a query or partition can select "all Pfam hits". Until now the method could only be read out of
feature_id, which has no required format, and two converters spell one method differently: feature-table-corpus writessupfamand nmdc-lakehouse writessuperfamilyfor SUPERFAMILY hits. An enum catches that kind of split when data is validated.The same slot is in the source model, merged in turbomam/feature-table-corpus#169 (Add a method slot to Feature, so one table of hits can be filtered by method), so this copy and the next feature-table-corpus release match.
What changed
Featuregets an optionalmethodslot with rangeMethodEnum, separate fromsource(tool and version) andgenerated_by(the run). It's for evidence hits, and is left unset on gene and RNA calls.MethodEnumhas nine values:pfam,cog,tigrfam,smart,supfam,cath_funfam,ko_ec,tmhmm,signalp. The first seven are the names feature-table-corpus's IMG per-method converter already uses infeature_id; its IMG TMHMM and SignalP converter writes IMG's file suffixestmhandcleavage_sitesthere instead. The values have descriptions and links but nomeaningmappings yet.tests/data/valid/Dataset-001.yamlcarrymethod: pfam. A newtests/data/invalid/Dataset-invalid-method.yamlusessuperfamily.tests/test_data.pynow checks that every file intests/data/invalidfails validation.Validation
uv run pytest -q: 16 passed.superfamilyis not aMethodEnumvalue.